#pragma once

#include "semaphore.h"

// 对信号量的四个核心操作进行封装
class Sem
{
public:
    // 构造的时候就初始化信号量
    Sem(int val)
    {
        sem_init(&_sem, 0, val);
    }

    // P操作
    void P()
    {
        sem_wait(&_sem);
    }

    // V操作
    void V()
    {
        sem_post(&_sem);
    }

    // 析构的时候就销毁掉信号量
    ~Sem()
    {
        sem_destroy(&_sem);
    }

public:
    sem_t _sem;
};
